BigDecimal保留两位小数 | 您所在的位置:网站首页 › BigDecimal如何相除并保留小数后两位多种方法比较可选 › BigDecimal保留两位小数 |
文章目录
前言1.代码实现2.方法详解
注释
前言
在项目中经常会用到小数的一些计算,而float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确。所以有时候必须要采用BigDecimal。 1.代码实现代码如下(示例): public class Demo { public static void main(String[] args) { BigDecimal a =null; Integer faultRate = 6; a = BigDecimal.valueOf(faultRate.doubleValue()/3); BigDecimal b =a.setScale(2, RoundingMode.HALF_UP);//保留两位小数 System.out.println("结果是"+b); //下面将结果转化成百分比 NumberFormat percent = NumberFormat.getPercentInstance(); percent.setMaximumFractionDigits(2); System.out.println(percent.format(b.doubleValue())); } }运行结果: 2.方法详解BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4 setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍 setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入 setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字 |
CopyRight 2018-2019 实验室设备网 版权所有 |